package Day006_综合案例;

import java.util.ArrayList;
import java.util.Scanner;

public class Test {
    public static void main(String[] args) {

        // 创建Scanner对象,用于键盘录入数据
        Scanner sc = new Scanner(System.in);
        //将Scanner sc最为参数,方法可以直接调用,不必每个方法都创建Scanner

        // 创建ArrayList集合,用来存储学生对象
        ArrayList<Student> stuList = new ArrayList<>();

        // 创建ArrayList集合,用来存储老师对象
        ArrayList<Teacher> teaList = new ArrayList<>();
//----------------------------------------------------------------------------------------------------------------------
        //1.一层菜单,死循环

        //给循环命名   a: for(){
        //                  break a;
        //              } //直接退出

        for (; ; ) {
            System.out.println("*********欢迎来到信息管理系统**********");
            System.out.println();
            System.out.println("1 学员信息管理  2 教师信息管理  3 系统退出");
            int i = sc.nextInt();
            switch (i) {
                case 1:
                    // 进入学员信息管理系统二级菜单
                    setStudent(stuList, sc);
                    break;
                case 2:
                    // 进入教师信息管理系统二级菜单
                    setTeacher(teaList, sc);
                    break;
                case 3:
                    // 退出
                    System.exit(0);// 程序终止,退出
                    break;
                default:
                    System.out.println("您输入的有误,请重新输入!");
                    break;
            }
        }
    }
//----------------------------------------------------------------------------------------------------------------------

    //2.二级菜单,死循环,学员信息管理
    public static void setStudent(ArrayList<Student> stuList, Scanner sc) { //Scanner sc最为参数,方法可以直接调用
        //菜单界面
        for (; ; ) {
            System.out.println("==============================================");
            System.out.println("【学员信息管理】");
            System.out.println("1.添加学员   2.查询学员  3.修改学员   4.删除学员      5.返回");
            System.out.println();
            System.out.println("请输入功能序号:");
            int i = sc.nextInt();
            switch (i) {
                case 1:
                    // 添加学员
                    addStudent(stuList, sc);
                    break;
                case 2:
                    // 查询学员
                    checkStudent(stuList, sc);
                    break;
                case 3:
                    // 修改学员
                    reviseStudent(stuList, sc);
                    break;
                case 4:
                    // 删除学员
                    removeStudent(stuList, sc);
                    break;
                case 5:
                    // 返回上层菜单
                    return;// 直接结束二层菜单方法
                default:
                    System.out.println("您输入的功能序号有误,请重新输入!");
                    break;
            }
        }
    }
//----------------------------------------------------------------------------------------------------------------------

    //3.二级菜单,死循环,教师信息管理
    public static void setTeacher(ArrayList<Teacher> teaList, Scanner sc) { //Scanner sc最为参数,方法可以直接调用
        //菜单界面
        for (; ; ) {
            System.out.println("==============================================");
            System.out.println("【教师信息管理】");
            System.out.println("1.添加教师   2.查询教师  3.修改教师   4.删除教师      5.返回");
            System.out.println();
            System.out.println("请输入功能序号:");
            int i = sc.nextInt();
            switch (i) {
                case 1:
                    // 添加教师
                    addTeacher(teaList, sc);
                    break;
                case 2:
                    // 查询教师
                    checkTeacher(teaList, sc);
                    break;
                case 3:
                    // 修改教师
                    reviseTeacher(teaList, sc);
                    break;
                case 4:
                    // 删除教师
                    removeTeacher(teaList, sc);
                    break;
                case 5:
                    // 返回上层菜单
                    return;// 直接结束二层菜单方法
                default:
                    System.out.println("您输入的功能序号有误,请重新输入!");
                    break;
            }
        }
    }
//----------------------------------------------------------------------------------------------------------------------

    //4.添加学生信息的方法
    public static void addStudent(ArrayList<Student> stuList, Scanner sc) {
        System.out.println("请输入学员姓名:");
        String name = sc.next();
        System.out.println("请输入学员性别:");
        String sex = sc.next();
        System.out.println("请输入出生日期,格式为yyyy-MM-dd:");
        String birthday = sc.next();

        //创建学生对象
        Student stu = new Student();
        //对象属性赋值
        stu.setID(++Utils.SID); //静态成员SID  ++SID
        stu.setName(name);
        stu.setSex(sex);
        stu.setBirthday(birthday);
        stu.setAge(Utils.getAge(birthday)); //静态方法getAge,传入birthday计算出age
        //学生对象加入集合
        stuList.add(stu);
        System.out.println("添加学员信息成功!");
    }
//----------------------------------------------------------------------------------------------------------------------

    //5.添加教师信息的方法
    public static void addTeacher(ArrayList<Teacher> teaList, Scanner sc) {
        System.out.println("请输入教师姓名:");
        String name = sc.next();
        System.out.println("请输入教师性别:");
        String sex = sc.next();
        System.out.println("请输入出生日期,格式为yyyy-MM-dd:");
        String birthday = sc.next();

        //创建教师对象
        Teacher tea = new Teacher();
        //对象属性赋值
        tea.setID(++Utils.TID); //静态成员TID  ++TID
        tea.setName(name);
        tea.setSex(sex);
        tea.setBirthday(birthday);
        tea.setAge(Utils.getAge(birthday)); //静态方法getAge,传入birthday计算出age
        //教师对象加入集合
        teaList.add(tea);
        System.out.println("添加教师信息成功!");
    }
//----------------------------------------------------------------------------------------------------------------------

    //6.修改学生信息的方法
    public static void reviseStudent(ArrayList<Student> stuList, Scanner sc) {
        System.out.println("请输入要修改学员的ID:");
        // 获取用户输入的学生ID
        int i = sc.nextInt();
        //遍历集合 匹配ID
        for (int i1 = 0; i1 < stuList.size(); i1++) {
            Student stu = stuList.get(i1);
            if (stu.getID() == i) {
                //获取用户输入的修改信息
                System.out.println("请输入学员姓名(不做修改请输入0):");
                String name = sc.next();

                System.out.println("请输入学员性别(不做修改请输入0):");
                String sex = sc.next();

                System.out.println("请输入学员出生日期,格式为yyyy-MM-dd(不做修改请输入0):");
                String birthday = sc.next();

                //判断是否修改信息
                if ("0".equals(name) != true) {
                    stu.setName(name);
                }
                if (!"0".equals(sex)) {
                    stu.setSex(sex);
                }
                if (!"0".equals(birthday)) {
                    stu.setBirthday(birthday);
                    stu.setAge(Utils.getAge(birthday));
                }
                System.out.println("修改学员信息成功!");
                return; // 结束方法
            }
        }
        //if (stu.getID() != i)
        System.out.println("【错误】学员ID：" + i + " 未找到！");
    }
//----------------------------------------------------------------------------------------------------------------------

    //7.修改教师信息的方法
    public static void reviseTeacher(ArrayList<Teacher> teaList, Scanner sc) {
        System.out.println("请输入要修改教师的ID:");
        // 获取用户输入的教师ID
        int i = sc.nextInt();
        //遍历集合 匹配ID
        for (int i1 = 0; i1 < teaList.size(); i1++) {
            Teacher tea = teaList.get(i1);
            if (tea.getID() == i) {
                //获取用户输入的修改信息
                System.out.println("请输入教师姓名(不做修改请输入0):");
                String name = sc.next();

                System.out.println("请输入教师性别(不做修改请输入0):");
                String sex = sc.next();

                System.out.println("请输入教师出生日期,格式为yyyy-MM-dd(不做修改请输入0):");
                String birthday = sc.next();

                //判断是否修改信息
                if ("0".equals(name) != true) {
                    tea.setName(name);
                }
                if (!"0".equals(sex)) {
                    tea.setSex(sex);
                }
                if (!"0".equals(birthday)) {
                    tea.setBirthday(birthday);
                    tea.setAge(Utils.getAge(birthday));
                }
                System.out.println("修改教师信息成功!");
                return; // 结束方法
            }
        }
        //if (tea.getID() != i)
        System.out.println("【错误】教师ID：" + i + " 未找到！");
    }
//----------------------------------------------------------------------------------------------------------------------

    //8.删除学员信息的方法
    public static void removeStudent(ArrayList<Student> stuList, Scanner sc) {
        System.out.println("请输入要删除学员的ID:");
        int i = sc.nextInt();
        //遍历集合 匹配ID
        for (int i1 = 0; i1 < stuList.size(); i1++) {
            Student stu = stuList.get(i1);
            if (stu.getID() == i) {
                System.out.println("请看要删除的学员信息:");
                Utils.doWhat(stu);
                System.out.println("【确认】您确定要删除这条信息吗(y/n),y代表删除,n代表取消删除:");
                String s = sc.next();
                //判断是否删除
                if ("y".equals(s)) {
                    stuList.remove(i1);
                    System.out.println("删除成功!");
                }
                if ("n".equals(s)) {
                    System.out.println("【取消】删除操作被取消!");
                }
                return;
            }
        }
        //if(stu.getID() != i)
        System.out.println("【错误】学员ID：" + i + " 未找到！");
    }
//----------------------------------------------------------------------------------------------------------------------

    //9.删除教师信息的方法
    public static void removeTeacher(ArrayList<Teacher> teaList, Scanner sc) {
        System.out.println("请输入要删除教师的ID:");
        int i = sc.nextInt();
        //遍历集合 匹配ID
        for (int i1 = 0; i1 < teaList.size(); i1++) {
            Teacher tea = teaList.get(i1);
            if (tea.getID() == i) {
                System.out.println("请看要删除的教师信息:");
                Utils.doWhat(tea);
                System.out.println("【确认】您确定要删除这条信息吗(y/n),y代表删除,n代表取消删除:");
                String s = sc.next();
                //判断是否删除
                if ("y".equals(s)) {
                    teaList.remove(i1);
                    System.out.println("删除成功!");
                }
                if ("n".equals(s)) {
                    System.out.println("【取消】删除操作被取消!");
                }
                return;
            }
        }
        //if(stu.getID() != i)
        System.out.println("【错误】教师ID：" + i + " 未找到！");
    }
//----------------------------------------------------------------------------------------------------------------------

    //10.查看学员信息的方法
    public static void checkStudent(ArrayList<Student> stuList, Scanner sc) {
        //判断ID==i
        //如果集合中没有数据,直接返回
        if (stuList.size() == 0) {
            System.out.println("系统还没有添加数据");
            return; //结束方法
        }

        System.out.println("请输入要查看学员的ID:");
        int i = sc.nextInt();
        System.out.println("【查询结果:】");
        for (int i1 = 0; i1 < stuList.size(); i1++) {
            Student stu = stuList.get(i1);
            if (stu.getID() == i) {
                Utils.doWhat(stu);
            } else if (stu.getID() != i) {
                System.out.println("【错误】学员ID：\" + i + \" 未找到！");
            }
        }
    }
//----------------------------------------------------------------------------------------------------------------------

    //11.查看教师信息的方法
    public static void checkTeacher(ArrayList<Teacher> teaList, Scanner sc) {
        //判断ID==i
        //如果集合中没有数据,直接返回
        if (teaList.size() == 0) {
            System.out.println("系统还没有添加数据");
            return; //结束方法
        }

        System.out.println("请输入要查看教师的ID:");
        int i = sc.nextInt();
        System.out.println("【查询结果:】");
        for (int i1 = 0; i1 < teaList.size(); i1++) {
            Teacher tea = teaList.get(i1);
            if (tea.getID() == i) {
                Utils.doWhat(tea);
            } else if (tea.getID() != i) {
                System.out.println("【错误】教师ID：\" + i + \" 未找到！");
            }
        }
    }
}
